package org.springblade.common.constant;

import lombok.AllArgsConstructor;
import lombok.Getter;
import org.springblade.core.tool.api.IResultCode;
import org.springblade.core.tool.utils.StringPool;

import java.util.Arrays;

/**
 * 保留版权 : CopyRright (c) 2024-2024 于继业 版权所有
 * 文件名称 : BizConstant
 * 文件编号 : 1-1-1
 * 文件版本 : 2024-04-14.01
 * 创建日期 : 2024-04-14
 * 修改人名 :
 * 修改日期 :
 * 功能描述 :
 *
 * @author 于继业
 */
@Getter
@AllArgsConstructor
public enum BizConstant implements IResultCode {
	PARAMS_ERROR(4002, "参数异常"),

	/** 系统异常 */
	WECHAT_CONNECT_NOT_EXIST(1001, "微信联合登录未配置"),
	VERIFICATION_EXIST(1002, "验证码服务异常"),
	LIMIT_ERROR(1003, "访问过于频繁，请稍后再试"),
	ILLEGAL_REQUEST_ERROR(1004, "非法请求，请重新刷新页面操作"),
	IMAGE_FILE_EXT_ERROR(1005, "不支持图片格式"),
	FILE_NOT_EXIST_ERROR(1011, "上传文件不能为空"),
	FILE_TYPE_NOT_SUPPORT(1010, "不支持上传的文件类型！"),
	PLATFORM_NOT_SUPPORTED_IM(1006, "平台未开启IM"),
	STORE_NOT_SUPPORTED_IM(1007, "店铺未开启IM"),
	UNINITIALIZED_PASSWORD(1008, "非初始化密码，无法进行初始化设置"),

	/** 参数 */
	PARAMETER_SAVE_ERROR(12001, "参数添加失败"),
	PARAMETER_UPDATE_ERROR(12002, "参数编辑失败"),

	/** 业务基础消息 */
	SERVICE_FORM_EMPTY(12002, "表单中不存在数据"),
	SERVICE_RECOED_NOT_EXIST(12003, "不存在的记录"),
	SERVICE_DUPLICATE_PHONE_NUMBER(12004, "重复的手机号码"),
	SERVICE_DUPLICATE_NAME(12005, "重复的姓名"),

	/** 用户 */
	USER_EDIT_SUCCESS(20001, "用户修改成功"),
	USER_NOT_EXIST(20002, "用户不存在"),
	USER_NOT_LOGIN(20003, "用户未登录"),
	USER_AUTH_EXPIRED(20004, "用户已退出，请重新登录"),
	USER_AUTHORITY_ERROR(20005, "权限不足"),
	USER_CONNECT_LOGIN_ERROR(20006, "未找到登录信息"),
	USER_EXIST(20008, "该用户名或手机号已被注册"),
	USER_PHONE_NOT_EXIST(20009, "手机号不存在"),
	USER_PASSWORD_ERROR(20010, "密码不正确"),
	USER_NOT_PHONE(20011, "非当前用户的手机号"),
	USER_CONNECT_ERROR(20012, "联合第三方登录，授权信息错误"),
	USER_RECEIPT_REPEAT_ERROR(20013, "会员发票信息重复"),
	USER_RECEIPT_NOT_EXIST(20014, "会员发票信息不存在"),
	USER_EDIT_ERROR(20015, "用户修改失败"),
	USER_OLD_PASSWORD_ERROR(20016, "旧密码不正确"),
	USER_COLLECTION_EXIST(20017, "无法重复收藏"),
	USER_GRADE_IS_DEFAULT(20018, "会员等级为默认会员等级"),
	USER_NOT_BINDING(20020, "未绑定用户"),
	USER_AUTO_REGISTER_ERROR(20021, "自动注册失败,请稍后重试"),
	USER_OVERDUE_CONNECT_ERROR(20022, "授权信息已过期，请重新授权/登录"),
	USER_CONNECT_BANDING_ERROR(20023, "当前联合登陆方式，已绑定其他账号，需进行解绑操作"),
	USER_CONNECT_NOT_EXIST_ERROR(20024, "暂无联合登陆信息，无法实现一键注册功能，请点击第三方登录进行授权"),
	USER_POINTS_ERROR(20024, "用户积分不足"),
	CLERK_SUPPER(20025, "店主无法操作"),
	CLERK_SAVE_ERROR(20026, "店员保存失败"),
	CLERK_NOT_FOUND_ERROR(20027, "店员不存在"),
	USER_STATUS_ERROR(20028, "用户已禁用"),
	CLERK_USER_ERROR(20029, "此账户已经绑定其他店铺"),
	CLERK_ALREADY_EXIT_ERROR(20030, "店员已经存在"),
	CLERK_DISABLED_ERROR(20031, "店员已禁用"),
	CLERK_CURRENT_SUPPER(20032, "无法删除当前登录店员"),
	CANT_EDIT_CLERK_SHOPKEEPER(20033, "无法在店员管理编辑店员信息"),

	/** 权限 */
	PERMISSION_DEPARTMENT_ROLE_ERROR(21001, "角色已绑定部门，请逐个删除"),
	PERMISSION_USER_ROLE_ERROR(21002, "角色已绑定管理员，请逐个删除"),
	PERMISSION_MENU_ROLE_ERROR(21003, "菜单已绑定角色，请先删除或编辑角色"),
	PERMISSION_DEPARTMENT_DELETE_ERROR(21004, "部门已经绑定管理员，请先删除或编辑管理员"),
	PERMISSION_BEYOND_TEN(21005, "最多可以设置10个角色"),
	PERMISSION_NOT_FOUND_ERROR(21006, "部门不存在"),
	PERMISSION_ROLE_NOT_FOUND_ERROR(21007, "角色不存在"),
	PERMISSION_CLERK_BAND_ERROR(21008, "此手机号码已绑定其他店铺 "),

	/** 文章 */
	ARTICLE_CATEGORY_NAME_EXIST(60001, "文章分类名称已存在"),
	ARTICLE_CATEGORY_PARENT_NOT_EXIST(60002, "文章分类父分类不存在"),
	ARTICLE_CATEGORY_BEYOND_TWO(60003, "最多为二级分类,操作失败"),
	ARTICLE_CATEGORY_DELETE_ERROR(60004, "该文章分类下存在子分类，不能删除"),
	ARTICLE_CATEGORY_HAS_ARTICLE(60005, "该文章分类下存在文章，不能删除"),
	ARTICLE_CATEGORY_NO_DELETION(60007, "默认文章分类不能进行删除"),
	ARTICLE_NO_DELETION(60008, "默认文章不能进行删除"),


	/** 页面 */
	PAGE_NOT_EXIST(61001, "页面不存在"),
	PAGE_OPEN_DELETE_ERROR(61002, "当前页面为开启状态，无法删除"),
	PAGE_DELETE_ERROR(61003, "当前页面为唯一页面，无法删除"),
	PAGE_RELEASE_ERROR(61004, "页面已发布，无需重复提交"),

	/** 设置 */
	SETTING_NOT_TO_SET(70001, "该参数不需要设置"),
	ALIPAY_NOT_SETTING(70002, "支付宝支付未配置"),
	ALIPAY_EXCEPTION(70003, "支付宝支付错误，请稍后重试"),
	ALIPAY_PARAMS_EXCEPTION(70004, "支付宝参数异常"),
	LOGISTICS_NOT_SETTING(70005, "您还未配置快递查询"),
	LOGISTICS_CHECK_SETTING(70005, "操作失败,请检查您的快递鸟配置"),
	ORDER_SETTING_ERROR(70006, "系统订单配置异常"),
	ALI_SMS_SETTING_ERROR(70007, "您还未配置阿里云短信"),
	SMS_SIGN_EXIST_ERROR(70008, "短信签名已存在"),

	/** 站内信 */
	NOTICE_NOT_EXIST(80001, "当前消息模板不存在"),
	NOTICE_ERROR(80002, "修改站内信异常，请稍后重试"),
	NOTICE_SEND_ERROR(80003, "发送站内信异常，请检查系统日志"),


	/** OSS */
	OSS_NOT_EXIST(80101, "OSS未配置"),
	OSS_EXCEPTION_ERROR(80102, "文件上传失败，请稍后重试"),
	OSS_DELETE_ERROR(80103, "图片删除失败"),

	/** 验证码 */
	VERIFICATION_SEND_SUCCESS(80201, "短信验证码,发送成功"),
	VERIFICATION_ERROR(80202, "验证失败"),
	VERIFICATION_CODE_INVALID(80204, "验证码已失效，请重新校验"),
	VERIFICATION_SMS_CHECKED_ERROR(80210, "短信验证码错误，请重新校验"),

	/** 微信相关异常 */
	WECHAT_CONNECT_NOT_SETTING(80300, "微信联合登陆信息未配置"),
	WECHAT_PAYMENT_NOT_SETTING(80301, "微信支付信息未配置"),
	WECHAT_QRCODE_ERROR(80302, "微信二维码生成异常"),
	WECHAT_MP_MESSAGE_ERROR(80303, "微信小程序小消息订阅异常"),
	WECHAT_JSAPI_SIGN_ERROR(80304, "微信JsApi签名异常"),
	WECHAT_CERT_ERROR(80305, "证书获取失败"),
	WECHAT_MP_MESSAGE_TMPL_ERROR(80306, "未能获取到微信模版消息id"),
	WECHAT_ERROR(80307, "微信接口异常"),
	APP_VERSION_EXIST(80307, "APP版本已存在"),

	/** IM */
	IM_MESSAGE_ADD_ERROR(80400, "IM消息发送错误"),
	IM_MESSAGE_EDIT_ERROR(80400, "IM消息更新错误"),

	/** 其他 */
	CUSTOM_WORDS_EXIST_ERROR(90000, "当前自定义分词已存在！"),
	CUSTOM_WORDS_NOT_EXIST_ERROR(90001, "当前自定义分词不存在！"),
	CUSTOM_WORDS_SECRET_KEY_ERROR(90002, "秘钥验证失败！"),
	CONNECT_NOT_EXIST(90000, "登录方式不存在！"),
	ELASTICSEARCH_INDEX_INIT_ERROR(90003, "索引初始化失败！"),
	PURCHASE_ORDER_DEADLINE_ERROR(90004, "供求单，已超过报名截止时间"),
	USER_ADD_ERROR(90005, "用户添加失败"),
	INDEX_BUILDING(90005, "索引正在生成");

	final int code;
	final String message;

	/**
	 * 根据code获取message
	 *
	 * @param code 编码
	 * @return 消息
	 */
	public static String getCode(int code) {
		return Arrays.stream(values())
			.filter(item -> item.code == code)
			.findFirst().map(item -> item.message)
			.orElse(StringPool.EMPTY);
	}
}

